// 请说出下列最终的执行结果，并解释为什么
var tmp = 123

if (true) {
  console.log(tmp)
  let tmp
}

// 结果
// 报错

/**
 * 解析
 *
 * 在执行console.log(tmp) 的时候，会在当前作用域下查找 tmp 变量，和var定义的变量不同，let 声明变量没有变量提升的效果，
 * 所以，let 声明的变量只能声明后才能使用，否则在语法解析的过程就会报错
 *
 * 这里 console.log(tmp) 在声明 tmp 前面，因此会报错
 */